home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / Music Util v1.5 TPL.adf / player.s < prev    next >
Text File  |  1987-05-04  |  11KB  |  646 lines

  1. **********************************
  2. * OKTALYZER V1.1 REPLAYER SOURCE *
  3. **********************************
  4.  
  5.         section    replayer,code_c
  6.  
  7.         jmp    p
  8.  
  9. ;by A.Sander with Defpac2
  10. ;(C) 1989 VERLAG MAYER
  11. ;- only for 4-Channels
  12.  
  13. rs_song:    incbin    SongName
  14. rs_songend:
  15.  
  16. p:        bsr.s    rs_init
  17.         bmi.s    rs_error
  18. rs_left:    btst    #6,$bfe001
  19.         bne.s    rs_left
  20.         bsr    rs_exit
  21.         moveq    #0,d0
  22.         rts
  23. rs_error:    moveq    #100,d0
  24.         rts
  25.  
  26. * init ********************************
  27.  
  28. rs_init:    lea    rs_song,a5
  29.         cmp.l    #'OKTA',(a5)+
  30.         bne    rs_error2
  31.         cmp.l    #'SONG',(a5)+
  32.         bne    rs_error2
  33.         move.l    a5,a0
  34.         lea    rs_cmformat(pc),a1
  35.         bsr    rs_search
  36.         lea    rs_channelmodes(pc),a0
  37.         tst.l    (a0)+
  38.         bne    rs_error2
  39.         tst.l    (a0)+
  40.         bne    rs_error2
  41.         move.l    a5,a0
  42.         lea    rs_extformat(pc),a1
  43.         bsr    rs_search
  44.         move.l    a5,a0
  45.         bsr    rs_getpatts
  46.         move.l    a5,a0
  47.         bsr    rs_getsamples
  48.  
  49.         clr.w    rs_pointer
  50.         bsr    rs_gettrkpos
  51.         sub.l    #16,rs_trkpos
  52.         subq.w    #1,rs_patty
  53.  
  54.         move.l    #$40404040,rs_vol
  55.         clr.w    rs_filter
  56.         clr.l    0.w
  57.         move.w    rs_speed,rs_actspeed
  58.         clr.w    rs_actcyc
  59.         move.w    #-1,rs_nextpt
  60.  
  61.         lea    rs_pbuffs,a0
  62.         moveq    #15,d0
  63. rs_loop4:    clr.l    (a0)+
  64.         dbf    d0,rs_loop4
  65.         lea    rs_pattline,a0
  66.         moveq    #3,d0
  67. rs_loop5:    clr.l    (a0)+
  68.         dbf    d0,rs_loop5
  69.  
  70.         move.w    #$ff,$dff09e
  71.         move.w    #$4000,$dff09a
  72.         move.l    $6c.w,rs_oldint+2
  73.         move.l    $70.w,rs_oldaud
  74.         move.l    #rs_int,$6c.w
  75.         move.l    #rs_audint,$70.w
  76.         move.w    #$780,$dff09c
  77.         move.w    #$780,$dff09a
  78.         move.w    #$c000,$dff09a
  79.         moveq    #0,d0
  80.         rts
  81. rs_error2:    moveq    #-1,d0
  82.         rts
  83.  
  84. * format search ***********************
  85.  
  86. ;a0:fpt
  87. ;a1:format list
  88.  
  89. rs_search:    move.l    a0,a2
  90.         move.l    (a1)+,d0
  91.         beq.s    rs_ex
  92. rs_loop:    cmp.l    #rs_songend,a2
  93.         beq.s    rs_ex
  94.         cmp.l    (a2)+,d0
  95.         bne.s    rs_next
  96.         move.l    (a1)+,d0
  97.         cmp.l    (a2)+,d0
  98.         ble.s    rs_nocorrect
  99.         move.l    -4(a2),d0
  100. rs_nocorrect:    move.l    (a1)+,a3
  101. rs_copy:    subq.l    #1,d0
  102.         bmi.s    rs_search
  103.         move.b    (a2)+,(a3)+
  104.         bra.s    rs_copy
  105. rs_next:    add.l    (a2)+,a2
  106.         bra.s    rs_loop
  107. rs_ex:        rts
  108.  
  109. * pattern descriptor ******************
  110.  
  111. rs_getpatts:    lea    rs_pattpts(pc),a1
  112.         move.l    #'PBOD',d0
  113. rs_loop2:    cmp.l    #rs_songend,a0
  114.         beq.s    rs_ready
  115.         movem.l    (a0)+,d1-d2
  116.         cmp.l    d0,d1
  117.         beq.s    rs_got
  118.         add.l    d2,a0
  119.         bra.s    rs_loop2
  120. rs_got:        move.l    a0,(a1)+
  121.         add.l    d2,a0
  122.         bra.s    rs_loop2
  123. rs_ready:    rts
  124.  
  125. * sample descriptor *******************
  126.  
  127. rs_getsamples:    lea    rs_samplepts(pc),a1
  128.         lea    rs_samples,a2
  129.         move.l    #'SBOD',d0
  130. rs_loop2a:    cmp.l    #rs_songend,a0
  131.         beq.s    rs_sready
  132.         movem.l    (a0)+,d1-d2
  133.         cmp.l    d0,d1
  134.         beq.s    rs_gots
  135.         add.l    d2,a0
  136.         bra.s    rs_loop2a
  137. rs_gots:    tst.l    20(a2)
  138.         bne.s    rs_setsample
  139.         lea    32(a2),a2
  140.         clr.l    (a1)+
  141.         bra.s    rs_gots
  142. rs_setsample:    move.l    a0,(a1)+
  143.         lea    32(a2),a2
  144.         add.l    d2,a0
  145.         bra.s    rs_loop2a
  146. rs_sready:    rts
  147.  
  148. * exit ********************************
  149.  
  150. rs_exit:    move.w    #$4000,$dff09a
  151.         move.l    rs_oldint+2,$6c.w
  152.         move.l    rs_oldaud,$70.w
  153.         move.w    #$c000,$dff09a
  154.         lea    $dff000,a6
  155.         moveq    #0,d0
  156.         move.w    #$f,$96(a6)
  157.         move.w    d0,$a8(a6)
  158.         move.w    d0,$b8(a6)
  159.         move.w    d0,$c8(a6)
  160.         move.w    d0,$d8(a6)
  161.         rts
  162.  
  163. rs_int:        btst    #5,$dff01f
  164.         beq.s    rs_oldint
  165.         movem.l    d0-d7/a0-a6,-(sp)
  166.         bsr    rs_rh
  167.         movem.l    (sp)+,d0-d7/a0-a6
  168. rs_oldint:    jmp    0
  169.  
  170. rs_rh:        bsr    rs_p4
  171.         addq.w    #1,rs_actcyc
  172.         move.w    rs_actspeed,d0
  173.         cmp.w    rs_actcyc,d0
  174.         ble.s    rs_addcyc
  175.         rts
  176.  
  177. rs_addcyc:    clr.w    rs_actcyc
  178.         moveq    #16,d0
  179.         add.l    d0,rs_trkpos
  180.         addq.w    #1,rs_patty
  181.         bsr    rs_getppatt
  182.         tst.w    rs_nextpt
  183.         bpl.s    rs_pattend
  184.         cmp.w    rs_patty,d0
  185.         bgt.s    rs_nonew
  186. rs_pattend:    clr.w    rs_patty
  187.         tst.w    rs_nextpt
  188.         bmi    rs_nonextpt
  189.         move.w    rs_nextpt,rs_pointer
  190.         bra.s    rs_newpos
  191. rs_nonextpt:    addq.w    #1,rs_pointer
  192. rs_newpos:    move.w    rs_pointer,d0
  193.         cmp.w    rs_len,d0
  194.         bne.s    rs_nonewinit
  195.         clr.w    rs_pointer
  196.         move.w    rs_speed,rs_actspeed
  197. rs_nonewinit:    bsr    rs_gettrkpos
  198. rs_nonew:    move.l    rs_trkpos,a0
  199.         lea    rs_pattline,a1
  200.         move.l    (a0)+,(a1)+
  201.         move.l    (a0)+,(a1)+
  202.         move.l    (a0)+,(a1)+
  203.         move.l    (a0)+,(a1)+
  204.         move.w    #-1,rs_nextpt
  205.         rts
  206.  
  207. rs_p4:        tst.w    rs_actcyc
  208.         bne.s    rs_effects
  209.  
  210.         bsr    rs_set
  211.         tst.w    d4
  212.         beq.s    rs_effects
  213.         bsr    rs_dma
  214.         bsr    rs_setperiods
  215.         or.w    #$8000,d4
  216.         move.w    d4,$dff096
  217.         bsr    rs_dma
  218.         bsr    rs_action
  219.  
  220. rs_effects:    bsr    rs_effect
  221.         lea    rs_vol,a0
  222.         lea    $dff0a9,a1
  223.         move.b    (a0)+,(a1)
  224.         move.b    (a0)+,$10(a1)
  225.         move.b    (a0)+,$20(a1)
  226.         move.b    (a0)+,$30(a1)
  227.         tst.b    rs_filter
  228.         beq.s    rs_blink
  229.         bclr    #1,$bfe001
  230.         rts
  231. rs_blink:    bset    #1,$bfe001
  232.         rts
  233.  
  234. rs_set:        lea    rs_samplepts,a0
  235.         lea    rs_pattline,a2
  236.         lea    rs_pbuffs,a3
  237.         lea    $dff0a0,a4
  238.         lea    rs_periods,a6
  239.  
  240.         moveq    #0,d4
  241.         moveq    #1,d5
  242.         moveq    #3,d7
  243.  
  244. rs_ploop:    bsr.s    rs_set4
  245.         addq.w    #4,a2
  246.         lea    16(a3),a3
  247.         lea    $10(a4),a4
  248.         add.w    d5,d5
  249.         dbf    d7,rs_ploop
  250.         rts
  251.  
  252. rs_set4:    moveq    #0,d3
  253.         move.b    (a2),d3
  254.         beq    rs_noset
  255.         subq.w    #1,d3
  256.         moveq    #0,d0
  257.         move.b    1(a2),d0
  258.         add.w    d0,d0
  259.         add.w    d0,d0
  260.         move.l    (a0,d0.w),d2
  261.         beq    rs_noset
  262.         lsl.w    #3,d0
  263.         lea    rs_samples,a1
  264.         add.w    d0,a1
  265.         tst.w    30(a1)
  266.         beq    rs_noset
  267.         move.l    20(a1),d1
  268.         lsr.l    #1,d1
  269.         tst.w    d1
  270.         beq    rs_noset
  271.         move.w    #124,6(a4)
  272.         lsl.w    #7,d5
  273.         move.w    d5,$dff09a
  274.         lsr.w    #7,d5
  275.         move.w    d5,$dff096
  276.         or.w    d5,d4
  277.         move.l    d2,(a4)
  278.         move.w    d3,12(a3)
  279.         add.w    d3,d3
  280.         move.w    (a6,d3.w),14(a3)
  281.         move.l    a0,-(sp)
  282.         lea    rs_vol,a0
  283.         moveq    #0,d0
  284.         move.b    rs_volum1(pc,d7.w),d0
  285.         move.b    29(a1),(a0,d0.w)
  286.         move.l    (sp)+,a0
  287.         tst.w    26(a1)
  288.         beq.s    rs_norep
  289.         tst.w    24(a1)
  290.         bne.s    rs_realrep
  291.  
  292.         move.w    26(a1),4(a4)
  293.         clr.l    (a3)
  294.         clr.w    4(a3)
  295.         moveq    #0,d0
  296.         move.w    26(a1),d0
  297.         add.l    d0,d0
  298.         add.l    d0,d2
  299.         move.l    d2,6(a3)
  300.         move.l    20(a1),d1
  301.         sub.l    d0,d1
  302.         lsr.l    #1,d1
  303.         move.w    d1,10(a3)
  304.         rts
  305.  
  306. rs_volum1:    dc.b    3,2,1,0
  307.  
  308. rs_realrep:    move.w    24(a1),4(a4)
  309.         moveq    #0,d0
  310.         move.w    24(a1),d0
  311.         add.l    d0,d0
  312.         add.l    d2,d0
  313.         move.l    d0,(a3)
  314.         move.w    26(a1),4(a3)
  315.         moveq    #0,d0
  316.         move.w    24(a1),d0
  317.         add.w    26(a1),d0
  318.         add.l    d0,d0
  319.         add.l    d0,d2
  320.         move.l    d2,6(a3)
  321.         move.l    20(a1),d1
  322.         sub.l    d0,d1
  323.         lsr.l    #1,d1
  324.         move.w    d1,10(a3)
  325.         rts
  326.  
  327. rs_norep:    move.w    d1,4(a4)
  328.         moveq    #2,d0
  329.         move.l    d0,(a3)
  330.         move.w    #1,4(a3)
  331.         clr.l    6(a3)
  332.         clr.w    10(a3)
  333. rs_noset:    rts
  334.  
  335. rs_setperiods:    lea    rs_pbuffs,a3
  336.         lea    $dff000,a4
  337.         btst    #0,d4
  338.         beq.s    rs_notc1
  339.         move.w    14(a3),$a6(a4)
  340. rs_notc1:    btst    #1,d4
  341.         beq.s    rs_notc2
  342.         move.w    14+16(a3),$b6(a4)
  343. rs_notc2:    btst    #2,d4
  344.         beq.s    rs_notc3
  345.         move.w    14+32(a3),$c6(a4)
  346. rs_notc3:    btst    #3,d4
  347.         beq.s    rs_notc4
  348.         move.w    14+48(a3),$d6(a4)
  349. rs_notc4:    rts
  350.  
  351. rs_action:    lea    rs_pbuffs,a3
  352.         lea    $dff0a0,a4
  353.         moveq    #3,d7
  354. rs_aloop:    move.l    (a3),d0
  355.         beq.s    rs_nopt
  356.         move.l    d0,(a4)
  357.         clr.l    (a3)
  358. rs_nopt:    move.w    4(a3),d0
  359.         beq.s    rs_nolen
  360.         move.w    d0,4(a4)
  361.         clr.w    4(a3)
  362. rs_nolen:    lea    16(a3),a3
  363.         lea    $10(a4),a4
  364.         dbf    d7,rs_aloop
  365.         rts
  366.  
  367. rs_effect:    lea    p(pc),a1
  368.         lea    rs_pattline,a2
  369.         lea    rs_pbuffs,a3
  370.         lea    $dff0a0,a4
  371.         lea    rs_periods,a6
  372.         moveq    #1,d5
  373.         moveq    #3,d7
  374. rs_eloop:    bsr    rs_doeff
  375.         addq.w    #4,a2
  376.         lea    $10(a3),a3
  377.         lea    $10(a4),a4
  378.         add.w    d5,d5
  379.         dbf    d7,rs_eloop
  380.         rts
  381.  
  382. rs_doeff:    moveq    #0,d0
  383.         move.b    2(a2),d0
  384.         add.w    d0,d0
  385.         moveq    #0,d1
  386.         move.b    3(a2),d1
  387.  
  388.         move.w    rs_effecttab(pc,d0.w),d0
  389.         beq.s    rs_noeff
  390.         bmi.s    rs_1eff
  391.  
  392.         jsr    (a1,d0.w)
  393.         bra.s    rs_noeff
  394.  
  395. rs_1eff:    tst.w    rs_actcyc
  396.         bne.s    rs_noeff
  397.         neg.w    d0
  398.         jsr    (a1,d0.w)
  399. rs_noeff:    rts
  400.  
  401. rs_effecttab:    dc.w    0,rs_portd-p,rs_portu-p,0,0,0
  402.         dc.w    0,0,0,0,rs_arp-p,rs_arp2-p
  403.         dc.w    0,rs_slided-p,0,p-rs_filt,0,p-rs_slideu
  404.         dc.w    0,0,0,p-rs_slided,0,0
  405.         dc.w    0,p-rs_posjmp,0,p-rs_release,p-rs_cspeed,0
  406.         dc.w    rs_slideu-p,rs_volume-p,0,0,0,0
  407.  
  408. rs_portd:    sub.w    d1,14(a3)
  409.         bpl.s    rs_pdok
  410.         move.w    #113,14(a3)
  411. rs_pdok:    move.w    14(a3),6(a4)
  412.         rts
  413.  
  414. rs_portu:    add.w    d1,14(a3)
  415.         bpl.s    rs_puok
  416.         move.w    #113,14(a3)
  417. rs_puok:    move.w    14(a3),6(a4)
  418.         rts
  419.  
  420. rs_arp:        move.w    12(a3),d2
  421.         move.w    rs_actcyc,d0
  422.         move.b    rs_divtab(pc,d0.w),d0
  423.         bne.s    rs_val1
  424.         and.w    #$f0,d1        ;runter
  425.         lsr.w    #4,d1
  426.         sub.w    d1,d2
  427.         bra.s    rs_setarp
  428.  
  429. rs_val1:    subq.b    #1,d0
  430.         bne.s    rs_val2
  431.         move.w    d2,8(a4)
  432.         bra.s    rs_setarp
  433.  
  434. rs_val2:    and.w    #$0f,d1
  435.         add.w    d1,d2
  436.         bra.s    rs_setarp
  437.  
  438. rs_divtab:    dc.b    0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2
  439.  
  440. rs_arp2:    move.w    12(a3),d2
  441.         move.w    rs_actcyc,d0
  442.         and.w    #3,d0
  443.         bne.s    rs_val3
  444.         bra.s    rs_setarp
  445.  
  446. rs_val3:    subq.b    #1,d0
  447.         bne.s    rs_val4
  448.         and.w    #$f,d1
  449.         add.w    d1,d2
  450.         bra.s    rs_setarp
  451.  
  452. rs_val4:    subq.b    #1,d0
  453.         beq.s    rs_setarp
  454.         and.w    #$f0,d1
  455.         lsr.w    #4,d1
  456.         sub.w    d1,d2
  457.  
  458. rs_setarp:    tst.w    d2
  459.         bpl.s    rs_arpok1
  460.         moveq    #0,d2
  461. rs_arpok1:    cmp.w    #35,d2
  462.         ble.s    rs_arpok2
  463.         moveq    #35,d2
  464. rs_arpok2:    add.w    d2,d2
  465.         move.w    (a6,d2.w),d0
  466.         move.w    d0,6(a4)
  467.         move.w    d0,14(a3)
  468.         rts
  469.  
  470. rs_slided:    move.w    12(a3),d2
  471.         sub.w    d1,d2
  472.         move.w    d2,12(a3)
  473.         bra.s    rs_setarp
  474.  
  475. rs_slideu:    move.w    12(a3),d2
  476.         add.w    d1,d2
  477.         move.w    d2,12(a3)
  478.         bra.s    rs_setarp
  479.  
  480. rs_cspeed:    tst.b    d1
  481.         beq.s    rs_nochange
  482.         and.w    #$f,D1
  483.         move.w    d1,rs_actspeed
  484. rs_nochange:    rts
  485.  
  486. rs_filt:    tst.b    d1
  487.         sne    rs_filter
  488.         rts
  489.  
  490. rs_volume:    move.l    a0,-(sp)
  491.         lea    rs_vol,a0
  492.         moveq    #0,d0
  493.         move.b    volum2(pc,d7.w),d0
  494.         add.w    d0,a0
  495.         cmp.w    #$40,d1
  496.         bgt.s    rs_4567
  497.         move.b    d1,(a0)
  498. rs_vex:        move.l    (sp)+,a0
  499.         rts
  500.  
  501. volum2:        dc.b    3,2,1,0
  502.  
  503. rs_4567:    sub.b    #$40,d1
  504.         cmp.b    #$10,d1
  505.         blt.s    rs_4
  506.         sub.b    #$10,d1
  507.         cmp.b    #$10,d1
  508.         blt.s    rs_5
  509.         sub.b    #$10,d1
  510.         cmp.b    #$10,d1
  511.         blt.s    rs_6
  512.         sub.b    #$10,d1
  513.         cmp.b    #$10,d1
  514.         blt.s    rs_7
  515.         bra.s    rs_vex
  516.  
  517. rs_6:        tst.w    rs_actcyc
  518.         bne.s    rs_vex
  519.  
  520. rs_4:        sub.b    d1,(a0)
  521.         bpl.s    rs_vex
  522.         clr.b    (a0)
  523.         bra.s    rs_vex
  524.  
  525. rs_7:        tst.w    rs_actcyc
  526.         bne.s    rs_vex
  527.  
  528. rs_5:        add.b    d1,(a0)
  529.         cmp.b    #$40,(a0)
  530.         ble.s    rs_vex
  531.         move.b    #$40,(a0)
  532.         bra.s    rs_vex
  533.  
  534. rs_release:    tst.l    6(a3)
  535.         beq.s    rs_rex
  536.         tst.w    10(a3)
  537.         beq.s    rs_rex
  538.         move.w    d5,d0
  539.         lsl.w    #7,d0
  540.         move.w    d0,$dff09a
  541.         move.l    6(a3),(a4)
  542.         move.w    10(a3),4(a4)
  543.         clr.l    6(a3)
  544.         clr.w    10(a3)
  545.         move.w    d0,$dff09c
  546.         or.w    #$8000,d0
  547.         move.w    d0,$dff09a
  548. rs_rex:        rts
  549.  
  550. rs_posjmp:    move.w    d1,d0
  551.         and.w    #$f,d0
  552.         lsr.w    #4,d1
  553.         mulu    #10,d1
  554.         add.w    d1,d0
  555.         cmp.w    rs_len,d0
  556.         bge.s    rs_nojmp
  557.         move.w    d0,rs_nextpt
  558. rs_nojmp:    rts
  559.  
  560. rs_audint:    movem.l    d0-d1/a0,-(sp)
  561.         lea    $dff000,a0
  562.         move.w    $1e(a0),d0
  563.         and.w    $1c(a0),d0
  564.         moveq    #0,d1
  565.         btst    #7,d0
  566.         beq.s    rs_let1
  567.         move.l    d1,$a0(a0)
  568.         move.w    #1,$a4(a0)
  569.         move.w    #$80,$9a(a0)
  570. rs_let1:    btst    #8,d0
  571.         beq.s    rs_let2
  572.         move.l    d1,$b0(a0)
  573.         move.w    #1,$b4(a0)
  574.         move.w    #$100,$9a(a0)
  575. rs_let2:    btst    #9,d0
  576.         beq.s    rs_let3
  577.         move.l    d1,$c0(a0)
  578.         move.w    #1,$c4(a0)
  579.         move.w    #$200,$9a(a0)
  580. rs_let3:    btst    #10,d0
  581.         beq.s    rs_let4
  582.         move.l    d1,$d0(a0)
  583.         move.w    #1,$d4(a0)
  584.         move.w    #$400,$9a(a0)
  585. rs_let4:    movem.l    (sp)+,d0-d1/a0
  586.         rte
  587.  
  588. rs_gettrkpos:    lea    rs_patterns,a0
  589.         add.w    rs_pointer,a0
  590.         moveq    #0,d0
  591.         move.b    (a0),d0
  592.         bsr.s    rs_getpattern
  593.         move.l    a0,rs_trkpos
  594.         clr.w    rs_patty
  595.         rts
  596.  
  597. rs_getppatt:    lea    rs_patterns,a0
  598.         add.w    rs_pointer,a0
  599.         moveq    #0,d0
  600.         move.b    (a0),d0
  601. rs_getpattern:    lea    rs_pattpts,a0
  602.         add.w    d0,d0
  603.         add.w    d0,d0
  604.         move.l    (a0,d0.w),a0
  605.         move.w    (a0)+,d0
  606.         rts
  607.  
  608. rs_dma:        movem.w    d0-d1,-(sp)
  609.         move.w    #4,d1
  610. rs_nextline:    move.b    $dff006,d0
  611. rs_waitline:    cmp.b    $dff006,d0
  612.         beq.s    rs_waitline
  613.         dbf    d1,rs_nextline
  614.         movem.w    (sp)+,d0-d1
  615.         rts
  616.  
  617. rs_cmformat:    dc.l    'CMOD',8,rs_channelmodes
  618. rs_extformat:    dc.l    'SAMP',36*32,rs_samples
  619.         dc.l    'SPEE',2,rs_speed
  620.         dc.l    'PLEN',2,rs_len
  621.         dc.l    'PATT',128,rs_patterns,0
  622. rs_channelmodes:ds.w    4
  623. rs_samples:    ds.b    36*32
  624. rs_speed:    dc.w    6
  625. rs_len:        dc.w    1
  626. rs_patterns:    ds.b    128
  627. rs_pattpts:    ds.l    64
  628. rs_samplepts:    ds.l    36
  629. rs_patty:    ds.w    1
  630. rs_trkpos:    ds.l    1
  631. rs_pbuffs:    ds.l    16
  632. rs_pattline:    ds.l    4
  633. rs_actspeed:    ds.w    1
  634. rs_actcyc:    ds.w    1
  635. rs_nextpt:    ds.w    1
  636. rs_pointer:    ds.w    1
  637. rs_vol:        ds.l    1
  638. rs_filter:    ds.w    1
  639. rs_oldaud:    ds.l    1
  640. rs_periods:    dc.w    $358,$328,$2FA,$2D0,$2A6,$280,$25C,$23A,$21A
  641.         dc.w    $1FC,$1E0,$1C5,$1AC,$194,$17D,$168,$153,$140
  642.         dc.w    $12E,$11D,$10D,$FE,$F0,$E2,$D6,$CA,$BE
  643.         dc.w    $B4,$AA,$A0,$97,$8F,$87,$7F,$78,$71
  644.  
  645.  
  646.